"""
字典类型：java里面的Map接口-hashMap
字典类型使用键值对存储数据-{key：value}
"""
"""
字典类型
创建一个空数据的字典
创建一个有保护数据的字典-保证字典中基本数据
"""
map_demo={}
map_values_demo={"name":"张三","age":19,"sex":"男"}
print(map_demo)
print(map_values_demo)
"""
字典类型数据获取-根据key获取value
    python独有的方法:map[key],注意当Key值不存在时候，python会报错 KeyError: 'zhangsan'，
        可以用key in {}来判断key值是否存在，类似java的containsKey
    map.get(key)->和java一样有值返回值，没有值返回空值，所以用get方法赋默认值 map.get(key,默认值)
"""
print(map_values_demo["name"])
# print(map_values_demo["zhangsan"])
# 判断键值是否存在
print("张三" in map_values_demo)
# get方法 赋予默认值
print(map_values_demo.get("name"))
print(map_values_demo.get("zhangsan","这是默认值"))
"""
字典类型数据编辑-set数据
    python独有的set方式 map[key]=value ，如果有值会被覆盖，没有就添加
    setdefault(key[, default]) 可以用来向字典中添加key-value
        注意 当这个key值在map中已存在，那么据不会set会返回原值。不存在才set
    update({key,value}),将其他字典set进字典中。类似java的addAll。有重复也会覆盖
"""
map_demo["name"]="李四"
print(map_demo)
map_demo["name"]="王五"
print(map_demo)
map_demo.setdefault("name","赵六")
print(map_demo)
map_demo.setdefault("age",12)
print(map_demo)
demo={'sex':'男','name':"李白"}
map_demo.update(demo)
print(map_demo)

"""
字典类型的数据移除-移除元素
类似与java的remove方法
pop方法-pop(key)-删除指定的key,当Key之不存在会报错->解决方式pop(key，默认值)
"""
map_demo.pop("name")
print(map_demo)
map_demo.pop("name1","默认值")
print(map_demo.pop("name1","默认值"))

"""
字典数据清空数据-clear
整个字典清空
"""
map_values_demo.clear()
print(map_values_demo)

"""
字典数据克隆-copy方法
java的浅度克隆方法-能够克隆数据，但是是浅度克隆
    例子:{name:"张三"，person:{age:12,sex:"男"}}
"""
clone_demo={"name":'张三','age':17,'person':[12,11,13]}
clone_res=clone_demo.copy()
print(clone_res)